﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Metadados;
using MySql.Data.MySqlClient;
using System.Data;


namespace Dados
{
    public class DBTributacao
    {
        private ConexaoMYSQL objConexao = new ConexaoMYSQL();

        public bool incluir(Tributacao obj)
        {
            bool blnRetorno = false;

            string strSql = "INSERT INTO Tributacao (triCodigo, triDescricao, triAliquota, triReducao)" +
                         " VALUES (@p_triCodigo, @p_triDescricao, @p_triAliquota, @p_triReducao)";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_triCodigo", obj.triCodigo));
            objParams.Add(new MySqlParameter("@p_triDescricao", obj.triDescricao));
            objParams.Add(new MySqlParameter("@p_triAliquota", obj.triAliquota));
            objParams.Add(new MySqlParameter("@p_triReducao", obj.triReducao));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public bool atualizar(Tributacao obj)
        {
            bool blnRetorno = false;

            string strSql = "UPDATE Tributacao SET triDescricao = @p_triDescricao, triAliquota = @p_triAliquota, " +
                            "triReducao = @p_triReducao WHERE triCodigo = @p_triCodigo";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_triDescricao", obj.triDescricao));
            objParams.Add(new MySqlParameter("@p_triAliquota", obj.triAliquota));
            objParams.Add(new MySqlParameter("@p_triReducao", obj.triReducao));
            objParams.Add(new MySqlParameter("@p_triCodigo", obj.triCodigo));
            
            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public bool excluir(int p_triCodigo)
        {
            bool blnRetorno = false;

            string strSql = "DELETE FROM Tributacao WHERE triCodigo = @p_triCodigo";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_triCodigo", p_triCodigo));

            blnRetorno = objConexao.executarComando(strSql, objParams);

            return blnRetorno;
        }

        public List<Tributacao> consultar(int p_triCodigo)
        {
            string strSql = "SELECT triCodigo, triDescricao, triAliquota, triReducao FROM Tributacao " +
                            "WHERE triCodigo = @p_triCodigo";

            List<MySqlParameter> objParams = new List<MySqlParameter>();
            objParams.Add(new MySqlParameter("@p_triCodigo", p_triCodigo));

            DataTable objTbTributacoes = objConexao.retornarTabela(strSql, objParams, "Tributacao");

            List<Tributacao> objTributacoes = new List<Tributacao>();
            foreach (DataRow row in objTbTributacoes.Rows)
            {
                Tributacao objTributacao = new Tributacao();
                objTributacao.triCodigo = (int)row["triCodigo"];
                objTributacao.triDescricao = (string)row["triDescricao"];
                objTributacao.triAliquota = (decimal)row["triAliquota"];
                objTributacao.triReducao = (decimal)row["triReducao"];

                objTributacoes.Add(objTributacao);
            }

            return objTributacoes;
        }

        public DataView listar(string p_triDescricao)
        {
            string strSql = "SELECT * FROM Tributacao WHERE triCodigo <> 0 ";

            List<MySqlParameter> objParams = new List<MySqlParameter>();

            if (p_triDescricao.Trim() != "")
            {
                strSql += "AND triDescricao LIKE @p_triDescricao";
                objParams.Add(new MySqlParameter("@p_triDescricao", "%" + p_triDescricao + "%"));
            }

            DataTable objTbTributacoes = new DataTable();

            objTbTributacoes = objConexao.retornarTabela(strSql, objParams, "Tributacao");

            return objTbTributacoes.DefaultView;
        }
    }
}
